package com.itheima.Jiuye10;

import java.util.ArrayList;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.stream.Stream;

public class Test {
    public static void main(String[] args) {
        ArrayList<String> list = new ArrayList<>();
        list.add("李桑");
        list.add("王军");
        list.add("王六");
        list.add("王五");
        list.add("朱桑");
        list.add("刘桑");
        Stream<String> stream = list.stream();
        System.out.println("=========匿名内部类方式============");
        stream.filter(new Predicate<String>() {
            @Override
            public boolean test(String s) {
                return s.startsWith("王");
            }
        }).forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        System.out.println("=========拉姆达表达式==========");
        //用单列集合名.的方式，创建一个stream流，在调用里面的filter方法，
        // 如果用Lanbda方法进行编码,则会进行stream对象的增强型遍历,遍历对象的所有元素,
        // 编码返回false则抛弃这个对象的元素,true则保留这个对象的元素
        list.stream().filter(
                (String s) ->{
                    boolean a = s.startsWith("王");
                    return a;
        }).forEach((String s) ->{
            System.out.println(s);
        });
        System.out.println("=======拉姆达表达式的再简化格式==========");
        list.stream().filter(s -> s.startsWith("王")).forEach(s -> System.out.println(s));
    }
}
